module hip.image_backend.impl;
public import hip.api.data.image;


final class HipNullImageDecoder : IHipAnyImageDecoder
{
    this(string path){}
    bool startDecoding(void[] data, void delegate() onSuccess, void delegate() onFailure)
    {
        onFailure();
        return false;
    }
    uint getWidth() const {return 0;}
    uint getHeight() const {return 0;}
    const(ubyte)[] getPixels() const {return null;}
    ubyte getBytesPerPixel() const {return 0;}
    const(ubyte)[] getPalette() const {return null;}
    void dispose(){}
}

IHipAnyImageDecoder getDecoder(string path)
{
    ///Use that alias for supporting more platforms
    version(HipARSDImageDecoder)
    {
        import hip.image_backend.arsd;
        return new HipARSDImageDecoder(path);
    } 
    else version(HipGamutImageDecoder)
    {
        import hip.image_backend.gamut;
        return new HipGamutImageDecoder(path);
    } 
    else version(WebAssembly) 
    {
        import hip.image_backend.webassembly;
        return new HipWasmImageDecoder(path);
    }
    else
    {
        pragma(msg, "WARNING: Using NullImageDecoder.");
        return new HipNullImageDecoder();
    }
}